import { getCurrentInstance } from 'vue'
//@ts-ignore
import { hiprint } from "vue-plugin-hiprint";
//@ts-ignore
import { newHiprintPrintTemplate } from "@/utils/template-helper";
//@ts-ignore
import $ from "jquery";

export default function () {

    const TEMPLATE_KEY = getCurrentInstance()?.type.name; // 存储模板对象的 key
    
    /**
     * 构建设计器
     * 注意: 必须要在 onMounted 中去构建
     * 因为都是把元素挂载到对应容器中, 必须要先找到该容器
     */
    let hiprintTemplate: any;
    
    async function buildDesigner(template: any){
        $("#hiprint-printTemplate").empty(); // 先清空, 避免重复构建
        hiprintTemplate = newHiprintPrintTemplate(TEMPLATE_KEY, {
            template: template, // 模板json(object)
            settingContainer: "#PrintElementOptionSetting", // 元素参数容器
        });
        // 构建 并填充到 容器中
        hiprintTemplate.design("#hiprint-printTemplate");
    };
    
    /**
     * 直接打印: 借助客户端,静默打印(无弹窗直接打印)
     * 注意: 需要先连接客户端
     */
    async function print2(printData: any) {

        if (printData.LocationID === '') {
            alert("没有货位数据");
            return;
        }
        if (hiprint.hiwebSocket.opened) {
            hiprintTemplate.print2(printData);
            hiprintTemplate.on("printSuccess", async function (_e: any) {
                return "ok";
            })
            hiprintTemplate.on("printError", function (_e: any) {
                return "error";
            });
    
        } else {
            alert("请先连接客户端(刷新网页), 然后再点击「直接打印」");
        }
    };
    return {
        buildDesigner,
        print2
    }
}